package com.moore.utils;

import java.io.*;
import java.nio.file.Files;
import java.util.Base64;

public class FileUtils {
    public static byte[] readFileByIS(String path) {
        try {
            // 判断文件是否存在
            File filePath = new File(path);
            if (!filePath.exists()) {
                return null;
            }
            // 创建一个FileInputStream对象，用于读取指定路径的文件
            FileInputStream fileInputStream = new FileInputStream(path);
            // 创建一个字节数组，用于存储文件的字节（使用available方法估计输入的大小）
            byte[] fileData = new byte[fileInputStream.available()];
            // 读取文件的字节到字节数组中
            fileInputStream.read(fileData);
            // 关闭fileInputStream
            fileInputStream.close();
            // 返回字节数组
            return fileData;
        } catch (IOException e) {
            // 如果发生异常，则抛出一个RuntimeException
            throw new RuntimeException(e);
        }
    }

    public static String baseToImage(String base64String, String path, String imageName) {
        String imageFilePath = path + File.separator + imageName + ".png";
        try {
            // 检查并去掉 Base64 编码的前缀（如果存在）
            String base64Data = base64String.contains(",") ? base64String.split(",")[1] : base64String;

            // 解码 Base64 数据
            byte[] imageBytes = Base64.getMimeDecoder().decode(base64Data);

            // 创建文件路径
            File file = new File(imageFilePath);
            // 创建目录（如果不存在的话）
            file.getParentFile().mkdirs();

            // 写入文件
            try (OutputStream os = Files.newOutputStream(file.toPath())) {
                os.write(imageBytes);
                os.flush();
            }
            return imageFilePath;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}
